<?php

namespace app\admin\validate\tools;

use app\admin\validate\Validates;
use app\admin\service\tools\Account;

class AccountCategory extends Validates
{
    /**
     * 定义验证规则
     * 格式：'字段名'	=>	['规则1','规则2'...]
     *
     * @var array
     */	
	protected $rule = [
        'ids|标识' => 'require|array',
        'id|标识' => 'require|integer|>:0',
        'title|名称' => 'length:1,10',
        'status|状态' => 'in:0,1',
    ];
    
    /**
     * 定义错误信息
     * 格式：'字段名.规则名'	=>	'错误信息'
     *
     * @var array
     */	
    protected $message = [];

    /**
     * 场景验证
     * @var []
     */
    protected $scene = [
        'index' => ['title','status']
    ];

    /**
     * 定义新增场景验证
     * @return $this
     */
    public function sceneCreate()
    {
        return $this->only(['title','status'])
            ->append('title', 'require')
            ->append('status', 'require');
    }

    /**
     * 定义编辑场景验证
     * @return $this
     */
    public function sceneUpdate()
    {
        return $this->only(['title','status'])
            ->append('title', 'require')
            ->append('status', 'require');
    }

    /**
     * 定义删除场景验证
     * @return $this
     */
    public function sceneDelete()
    {
        return $this->only(['id'])
            ->append('id', 'isNullAccount');
    }

    /**
     * 定义批量删除场景验证
     * @return $this
     */
    public function sceneDestory()
    {
        return $this->only(['ids'])
            ->append('ids', 'isNullAccount');
    }

    /**
     * 自定义验证规则,检测分类下无账目
     * @param string 验证数据
     */
    protected function isNullAccount($value)
    {
        return (new Account())->categoryAcount($value)?:'分类下存在账目,请先删除账目';
    }

}
